Отметьте использование операций И и ИЛИ для сброса и установки, соответственно, одного бита. В этом примере мы не стали тратить время на модификацию текущего байта в ячейке current, поскольку в итоге он не изменяется. Если бы нам надо было изменить (и оставить измененным) какой-то другой управляющий бит, новый байт пришлось бы сохранить с помощью команды mov current, AL.
Аппаратный альтернативой хранения в памяти копии байта порта является включение в состав интерфейса порта с возможностью чтения, чтобы операция программного ввода позволила вам определить, что, собственно, зафиксировано в порте. Следующий пример позволит вам сообразить, как это делается.
Упражнение 10.6. Представьте себе, что вы полны энтузиазма и хотите добавить к схеме интерфейса Centronics порт с возможностью чтения. Сделайте так, чтобы чтение из порта В решало эту задачу. Вы будете приятно удивлены, обнаружив, как мало дополнительных цепей требует это усовершенствование.
Упражнение 10.7. Теперь перепишите программу 10.6, используя ваш новый порт и опустив ячейку current.
Порты Centronics используются практически во всех микрокомпьютерах; если вам нужен простой и быстрый параллельный выходной порт, без колебаний выбирайте Centronics. Во многих случаях (но не в IBM PC) микрокомпьютер позволит даже использовать порт в обе стороны. Обычно это делается путем посылки в порт управляющего бита, после чего изменяется направление передачи данных по единственной 8-разрядной шине данных.
SCSI и IPI. Это стандартные универсальные параллельные интерфейсы для подключения к компьютерам дисков и других высокопроизводительных периферийных устройств, как уже кратко упоминалось в разд. 10.16. SCSI (Small Computer System Interface — интерфейс малых компьютерных систем) представляет собой 8-бит параллельный кабельный интерфейс с квитированием и протоколами для обслуживания нескольких машин и нескольких периферийных устройств. В SCSI предусмотрены и синхронный, и асинхронный режимы, а также определенные программные протоколы. Вы можете найти интерфейсную плату SCSI для установки на магистраль практически любого популярного микрокомпьютера, включая VME и Multibus I и II; затем вы подсоединяете этот «главный адаптер» SCSI с помощью плоского кабеля SCSI-шины к плате периферийного контроллера (рис. 10.22). Плата контроллера часто является элементом самого периферийного устройства (т. е. располагается в дисководе жесткого диска) и взаимодействует с дисководом через «интерфейс уровня устройства», который может называться ST-506/412, ESDI или SMD.
Рис. 10.22. Магистраль SCSI с единственным периферийным устройством.
Достоинством SCSI является то, что с помощью этого интерфейса все микрокомпьютеры становятся совместимыми со всеми периферийными устройствами. Каждый разработчик считает своим долгом использовать SCSI, и в новых микрокомпьютерах этот интерфейс располагается прямо на системной плате. Со стороны периферийного устройства тоже удается избавиться от контроллера путем использования «архитектуры встроенного SCSI», когда магистраль SCSI становится одновременно и интерфейсом уровня устройства. Другими словами, вы соединяете кабелем системную плату микрокомпьютера с дисководом. SCSI обеспечивает передачу данных со скоростью до 1,5 Мбайт/с (при асинхронной передаче) или 4 Мбайт/с (при синхронной) при длине кабеля до 7 м (несимметричный) или 27 м (симметричный).
Интерфейс SCSI достаточно сложен, и мы не можем описывать здесь все его сигналы, режимы, командные протоколы и интерфейсные возможности. Ввиду его популярности, для облегчения вашей жизни, выпускаются однокристальные интерфейсные микросхемы (например, серии NCR 5380, Western Digital ЗЗС90, а также фирмами Fujitsu, Ferranti и др.).
SCSI хорошо работает с нынешними дисками. Однако для увеличения скорости передачи промышленность подумывает о переходе на 16-разрядную шину. Тогда, возможно, вступит в свои права интерфейс IPI (Intelligent Peripheral Interface- интеллектуальный периферийный интерфейс). IPI определяет 16-разрядную параллельную магистраль, работающую на скоростях до 10 Мбайт/с (частота передачи 5 МГц); как и SCSI, IPI обслуживает несколько машин и несколько периферийных устройств. Последнее время жесткие диски увеличивают свою скорость и плотность семимильными шагами; если еще принять во внимание рост скорости передачи, становится ясно, что мир быстро идет к универсальным интерфейсам (SCSI или IPI) со встроенной шиной. Через несколько лет, возможно, все остальные форматы будут забыты.
IEEE-488 (GPIB, HPIB). Когда появились первые приборы с выходами данных на задней панели, каждая компания все делала по-своему. Протоколов было почти столько же, сколько самих приборов, с параллельной или последовательной передачей, положительной или отрицательной полярностью и невообразимыми процедурами квитирования. Это был сумасшедший дом. Живо вспоминается разработка цифрового индикатора с огромными (высотой 15 см) цифрами для лекционного зала Гарвардского университета; для каждого из наших приборов у него были отдельные входные цепи!
В середине 60-х гг. фирма Hewlett-Packard решила покончить со всем этим безобразием, предложив универсальный приборный интерфейс. Фирма с присущей ей скромностью назвала его HPIB (Hewlett-Packard Interface Bus — интерфейсная магистраль Hewlett-Packard) и использовала его в качестве единственного интерфейса во всех новых разработках. HPIB позволяет подключать к магистральному кабелю (до 20 м длиной) до 15 приборов с помощью остроумно устроенных соединителей, которые можно вставлять друг в друга. По протоколу HPIB данные на магистрали имеют ширину 1 байт и передаются с квитированием; скорость передачи доходит до 1 Мбайт/с; предусмотрены программные команды, разрешающие любому устройству, подключенному к магистрали, стать «ведущим» (т. е. источником сообщений), а любой комбинации остальных устройств — «ведомыми» (т. е. приемниками сообщений). «Контроллер» диктаторски распоряжается, что делать каждому устройству.
Интерфейс HPIB оказался столь удачным, что комиссия по стандартизации Института инженеров по электротехнике и радиоэлектронике (ШЕЕ) официально признала его. В результате появился стандарт IEEE-488-1975/ANSI МС1.1, который все (кроме фирмы Hewlett-Packard) называют GPIB (General-Purpose Interface Bus-интерфейсная магистраль общего назначения), или «магистраль 488». GPIB стал универсальным цифровым интерфейсом для лабораторных приборов. С помощью GPIB можно связать вместе приборы любых компаний, да еще заставить микрокомпьютер (или настольный калькулятор) отдавать приказания. Например, вы можете задать форму сигнала, частоту и амплитуду синтезатору частот, а затем выполнить измерения напряжения в том же эксперименте или процессе.
10.21. Локальные вычислительные цепи
В доисторические времена вычисления выполнялись на больших централизованных ЭВМ в «пакетном» режиме. Это были мощные (более медленные, чем наименее мощные из современных персональных компьютеров, с крошечной памятью) и дорогие (сравнимые по цене с современными супер-ЭВМ) машины. Вы пробивали свои программы на колодах перфокарт, затем запускали задание. При удачном стечении обстоятельств к концу дня вы получали результаты аварийно завершившегося счета, и на следующее утро могли снова запустить свое задание, чтобы выловить следующую ошибку. Сегодня мы все развращены невероятной мощностью настольных компьютеров, быстрыми дисками, изящной графикой. Нам хочется большего. Нам хочется обмениваться файлами с приятелем, сидящим в соседней комнате, не вставая со стула. Нам хочется иметь мгновенный доступ к любым базам данных, принтерам и уникальной периферии. Все это доступно при наличии сетей-глобальных сетей вроде BITNET или DECNET и локальных вычислительных сетей (ЛВС) типа Ethernet или LocalTalk. Сети находятся еще в младенческом периоде своего развития, и в ближайшее десятилетие можно ожидать драматических изменений в этой области. Однако тенденции уже ясны, поэтому стоит остановиться на типах ЛВС, используемых сегодня.
Протокол CSMA/CD (Ethernet). Ethernet является типичным представителем сетей с коллективным доступом, опознанием несущей и обнаружением конфликтов (CSMA/CD). Для передачи сообщений адресуемому приемнику со скоростью 10 Мбит/с используется коаксиальный кабель. Сообщения Ethernet пересылаются «пакетами» с преамбулой и контролем ошибок. Протокол передачи выглядит примерно таким образом: (а) ждите прекращения активности в сети; (б) начинайте передачу своего пакета (см. ниже); (в) продолжая передачу, одновременно контролируйте наложение сообщений («конфликт»); (г) (1) пока наложений нет, продолжайте передавать свое сообщение, но (2) если вы обнаруживаете наложение, пошлите сигнал затора сети (чтобы все знали, что обнаружен конфликт), затем прекратите передачу, выждите случайный интервал времени и попробуйте снова; после каждой последовательной неудачи выжидайте больший по величине «случайный» интервал времени.